软考真题
第4题
堆数据结构定义如下:

对于n个元素的关键字序列a1,a2,…,an},当且仅当满足下列关系时称其为堆。

在一个堆中,若堆顶元素为最大元素,则称为大顶堆;若堆顶元素为最小元素,则 称为小顶堆。堆常用完全二叉树表示,图4-1是一个大顶堆的例子。



堆数据结构常用于优先队列中,以维护由一组元素构成的集合。对应于两类堆结构, 优先队列也有最大优先队列和最小优先队列,其中最大优先队列采用大顶堆,最小优先队列采用小顶堆。以下考虑最大优先队列。

假设现已建好大顶堆A,且已经实现了调整堆的函数heapify(A,n,index)。

下面将C代码中需要完善的三个函数说明如下:

(1) heapMaximum(A):返回大顶堆A中的最大元素。

(2) heapExtractMax(A):去掉并返回大顶堆A的最大元素,将最后一个元素“提前” 到堆顶位置,并将剩余元素调整成大顶堆。

(3) maxHeapInsert(A, key):把元素key插入到大顶堆A的最后位置,再将A调整成大顶堆。

优先队列采用顺序存储方式,其存储结构定义如下:





【问题:4.1】根据以上说明和C代码,填充C代码中的空(1)〜(5)。
【问题:4.2】根据以上 C 代码,函数heapMaximum、heapExtractMax 和maxHeapInsert 的时间复杂度的紧致上界分别为 (6) 、 (7) 和(8)(用O符号表示)。
【问题:4.3】若将元素10 插入到堆 A =<15, 13, 9, 5, 12, 8, 7,4, 0, 6,2, 1>中,调用 maxHeapInsert 函数进行操作,则新插入的元素在堆A中第 (9) 个位置(从1开始)。
2010年 下半年 下午试卷 案例
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2010年 下半年 下午试卷 案例

笔记

答题卡
加油
纠错
得分:0